package com.daohang361.imqq.ServerContex;
import java.io.File;
import java.util.Collection;
import java.util.Hashtable;

import com.daohang361.imqq.Asycore.Connector;
import com.daohang361.imqq.Asycore.QQUser;

/** 
 * @author naner E-mail:likun3344@163.com 
 * @create time：2011-4-10 下午04:57:01
 * 保存所有session ,用于封装QQClient,以及保存连接信息队列
 */
public class SessionContex {
	/**
	 * 存放号码连接信息
	 */
	private static Hashtable<Integer,Connector> sessionConnect =new Hashtable<Integer, Connector>();
    /**
     * 存放号码属性信息
     */
	private static Hashtable<Integer, QQUser> sessionContex  = new Hashtable<Integer, QQUser>();
	
	/**
	 * 存放发送给好友的密钥key,键为 fromQQ+targerQQ,值为md5(目标QQ号码+sessionkey)
	 */
	private static Hashtable<String,byte[]> sendFriendKey = new  Hashtable<String,byte[]>();
	
	/**
	 * QQ安装的绝对路径
	 */
	private static String QQMainPath="";
	/**
	 * 获取用户会话session
	 * @param qqNumber
	 * @return QQUser
	 */
	public static QQUser getQQUser(Integer qqNumber)
	{
		return sessionContex.get(qqNumber);
	}
	
	/**
	 * 保存用户属性
	 * @param qqNumber
	 * @param user
	 */
	public synchronized static void saveQQUser(Integer qqNumber,QQUser user){
		sessionContex.remove(qqNumber);
		sessionContex.put(qqNumber, user);
	}
	
	public static Hashtable<Integer, QQUser> getSessionContex() {
		return sessionContex;
	}
	
	/**
	 * 返回QQUser列表
	 * @return QQUser列表
	 */
	public static Collection<QQUser> getQQList(){
		return sessionContex.values();
	}
	/**
	 * 获取号码连接属性
	 * @param qqNumber
	 * @return	连接属性
	 */
	public static Connector getConnector(Integer qqNumber){
		return sessionConnect.get(qqNumber);
	}

	public synchronized static void saveSessionConnector(int qq, Connector defualtConnector) {
		sessionConnect.remove(qq);
		sessionConnect.put(qq, defualtConnector);
	}

	public static byte[] getSendFriendKey(String key) {
		return sendFriendKey.get(key);
	}
	
	public static synchronized void saveSendFriendKey(String key,byte[] value) {
		 sendFriendKey.remove(key);
		 sendFriendKey.put(key, value);
	}

	public static String getQQMainPath() {
		return QQMainPath;
	}

	public static void setQQMainPath() {
		File f = new File("");
		String path=f.getAbsolutePath();
		QQMainPath = path;//绝对路径例如:F:\nutch\IMQQ
	}
	static{
		setQQMainPath();
	}
}
